package com.yuanluludev.lib_xpopup

import android.content.Context
import android.graphics.Color
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.yuanluludev.lib_xpopup.interfaces.OnImageViewerLongPressListener
import com.yuanluludev.lib_xpopup.util.SmartGlideImageLoader
import com.yuanluludev.lib_xpopup.util.XPopupUtils

object DragPhotoViewUtils {

    /**
     * 大图浏览类型弹窗，多张图片使用场景
     *
     * @param srcView               源View，就是你点击的那个ImageView，弹窗消失的时候需回到该位置。如果实在没有这个View，可以传空，但是动画变的非常僵硬，适用于在Webview点击场景
     * @param currentPosition       指定显示图片的位置
     * @param urls                  图片url集合
     * @param isInfinite            是否需要无限滚动，默认为false
     * @param isShowPlaceHolder     是否显示默认的占位View，默认为false
     * @param placeholderColor      占位View的填充色，默认为-1
     * @param placeholderStroke     占位View的边框色，默认为-1
     * @param placeholderRadius     占位View的圆角大小，默认为-1
     * @param isShowSaveBtn         是否显示保存按钮，默认显示
     * @param srcViewUpdateListener 当滑动ViewPager切换图片后，需要更新srcView，此时会执行该回调，你需要调用updateSrcView方法。
     * @param longPressListener     当图片长按的时候执行
     */
    fun showDragPhotoView(
        context: Context,
        view: ImageView?,
        position: Int,
        imagePaths: List<String>,
        isShowPlaceHolder: Boolean = true,
        placeholderColor: Int = -1,
        placeholderStroke: Int = -1,
        placeholderRadius: Int = -1,
        bgColor: Int = Color.rgb(32, 36, 46),
        errImgRes: Int = R.drawable.image_error_hodler,
        longPressListener: OnImageViewerLongPressListener? = null,
    ) {
        XPopup.Builder(context)
            // .animationDuration(1000)
            .isTouchThrough(false)
            .asImageViewer(
                view,
                position,
                imagePaths,
                false,
                isShowPlaceHolder,
                placeholderColor,
                placeholderStroke,
                placeholderRadius,
                false,
                bgColor,
                { popupView, pos ->

                    val rv = view?.parent as RecyclerView?
                    rv?.apply {
                        popupView.updateSrcView(this.getChildAt(pos) as ImageView)
                    }

                },
                SmartGlideImageLoader(errImgRes),
                longPressListener
            )
            .show()
    }


    /**
     * 大图浏览类型弹窗，单张图片使用场景
     *
     * @param srcView           源View，就是你点击的那个ImageView，弹窗消失的时候需回到该位置。如果实在没有这个View，可以传空，但是动画变的非常僵硬，适用于在Webview点击场景
     * @param url               资源id，url或者文件路径
     * @param isInfinite        是否需要无限滚动，默认为false
     * @param placeholderColor  占位View的填充色，默认为-1
     * @param placeholderStroke 占位View的边框色，默认为-1
     * @param placeholderRadius 占位View的圆角大小，默认为-1
     * @param isShowSaveBtn     是否显示保存按钮，默认显示
     * @param bgColor           背景颜色
     * @param longPressListener 当图片长按的时候执行
     * @return
     */
    fun showSingleDragPhotoView(
        context: Context,
        srcView: ImageView? = null,
        url: String,
        isInfinite: Boolean = false,
        placeholderColor: Int = ContextCompat.getColor(context, R.color.color_666666),
        placeholderStroke: Int = ContextCompat.getColor(context, R.color.color_666666),
        placeholderRadius: Int = XPopupUtils.dp2px(context, 3F),
        isShowSaveBtn: Boolean = false,
        bgColor: Int = Color.BLACK,
        errImgRes: Int = R.drawable.image_error_hodler,
        longPressListener: OnImageViewerLongPressListener? = null
    ) {
        XPopup.Builder(context)
            .isTouchThrough(false)
            .asImageViewer(
                srcView,
                url,
                isInfinite,
                placeholderColor,
                placeholderStroke,
                placeholderRadius,
                isShowSaveBtn,
                bgColor,
                SmartGlideImageLoader(errImgRes),
                longPressListener
            )
            .show()
    }

}